/*
 * @Date: 2023-10-21 20:27:37
 * @LastEditTime: 2023-10-24 18:32:24
 * 介绍:
 */
import {
  NERTCLogLevel,
  NERTCRenderMode,
  NERTCMirrorMode,
  NERtcVideoStreamType,
  NERtcVideoFrameRate,
  NERtcVideoCropMode,
  NERtcDegradationPreference,
  NERtcVideoOutputOrientationMode,
  NERtcVideoProfileType,
  NERtcRemoteVideoStreamType,
  NERTCAudioDevice,
  NERTCAudioDeviceType,
  NERTCAudioDeviceState,
  NERTCVideoDeviceState,
  NERTCConnectionType,
  NERTCErrorCode,
  NERtcAudioVolumeInfo,
  NERTCAudioProfile,
  NERTCAudioScenario,
  NERTCChannelProfile,
  NERTCUserRole,
  NERtcSubStreamContentPrefer,
} from "@/sdk/lib/NERtcUniappSDK-JS/lib/NERtcDefines";
/**未获取到状态栏高度时的替补值 */
export const DEFAULT_STATUS_BAR_HEIGHT = 29;

export const engineConfig = {
  logDir: "", // expected log directory
  logLevel: NERTCLogLevel.DEBUG,
};

//设置本地用户视图（setupLocalVideoCanvas）的配置参数
export const LocalVideoCanvasConfig = {
  renderMode: NERTCRenderMode.Fit, // Fit表示应区域。视频尺寸等比缩放,保证所有区域被填满,视频超出部分会被裁剪
  mirrorMode: NERTCMirrorMode.ENABLE, //AUTO表示使用默认值,由sdk控制，ENABLE 开启
  isMediaOverlay: false, //表示小画布置于大画布上面
};

//设置远端用户视图（setupRemoteVideoCanvas）的配置参数
export const RemoteVideoCanvasConfig = {
  renderMode: NERTCRenderMode.Fit, // Fit表示应区域。视频尺寸等比缩放,保证所有区域被填满,视频超出部分会被裁剪
  mirrorMode: NERTCMirrorMode.AUTO, //AUTO表示使用默认值,由sdk控制
  isMediaOverlay: false, //表示小画布置于大画布上面
};

//设置本端用户的视频辅流画布（setupLocalSubStreamVideoCanvas）的配置参数
export const LocalSubStreamVideoCanvasConfig = {
  renderMode: NERTCRenderMode.Fit, // Fit表示应区域。视频辅流尺寸等比缩放,保证所有区域被填满,视频辅流超出部分会被裁剪
  mirrorMode: NERTCMirrorMode.DISABLE, //DISABLE表示禁用
  isMediaOverlay: false, //表示小画布置于大画布上面
};

//设置远端用户的视频辅流视图（setupRemoteSubStreamVideoCanvas）的配置参数
export const RemoteSubStreamVideoCanvasConfig = {
  renderMode: NERTCRenderMode.Fit, // Fit表示应区域。视频尺寸等比缩放,保证所有区域被填满,视频超出部分会被裁剪
  mirrorMode: NERTCMirrorMode.AUTO, //AUTO表示使用默认值,由sdk控制
  isMediaOverlay: false, //表示小画布置于大画布上面
  //userID: userID //对方userID
};

//开启屏幕共享（startScreenCapture）的配置参数
export const ScreenCaptureConfig = {
  maxProfile: NERtcVideoProfileType.Standard,
  frameRate: NERtcVideoFrameRate.FRAME_RATE_FPS_24, //设置帧率24
  minFrameRate: NERtcVideoFrameRate.FRAME_RATE_FPS_15, //设置最小帧率15
  bitrate: 2500, //设置屏幕共享码率1500kbps
  minBitrate: 1500, //设置屏幕共享码率最小为1000kbps
  contentPrefer: NERtcSubStreamContentPrefer.CONTENT_PREFER_DETAILS, //屏幕共享功能的编码策略倾向
};

//设置音频编码属性（setAudioProfile）的配置参数
export const AudioProfileConfig = {
  profile: NERTCAudioProfile.STANDARD, //设置profile为标准模式
  scenario: NERTCAudioScenario.SPEECH, //scenario为语音场景
};

//设置视频编码属性（setLocalVideoConfig）的配置参数
export const VideoConfig = {
  videoStreamType: NERtcVideoStreamType.MAIN, // 表示是对视频主流的配置
  maxProfile: NERtcVideoProfileType.Standard, //不推荐使用了
  frameRate: NERtcVideoFrameRate.FRAME_RATE_FPS_24, //设置帧率24
  minFrameRate: NERtcVideoFrameRate.FRAME_RATE_FPS_15, //设置最小帧率15
  bitrate: 2000, //设置视频码率1500kbps
  minBitrate: 1000, //设置视频码率最小为1000kbps
  width: 640, //设置视频宽为1280
  height: 360, //设置视频高为720
  cropMode: NERtcVideoCropMode.CROP_16x9, //视频采集宽高比为16:9
  degradationPreference: NERtcDegradationPreference.DEGRADATION_DEFAULT, //带宽受限时的视频编码降级偏好为默认
  mirrorMode: NERTCMirrorMode.AUTO, //AUTO表示使用默认值
  orientationMode:
    NERtcVideoOutputOrientationMode.VIDEO_OUTPUT_ORIENTATION_MODE_ADAPTATIVE, //（默认）该模式下 SDK 输出的视频方向与采集到的视频方向一致。接收端会根据收到的视频旋转信息对视频进行旋转
};
export type MediaType = "subStreamVideo" | "video";
export interface AuthData {
  appKey: string;
  userID: string;
  roomName: string;
  token: string;
  list_id: string;
}

export interface InitState {
  /**初始化时使用相机 */
  initUseCamera?: boolean;
  /**初始化时使用屏幕共享 */
  initUseScreen?: boolean;
  /**初始化的时候使用麦克风 */
  initUseMic?: boolean;
  /**初始化的时候使用免提 */
  initUseHandsFree?: boolean;
  /**禁用屏幕预览 */
  disableScreenPreview?: boolean;
  /**房主id */
  manger: StrNumber;
}
